package module

import (
	"bufio"
	"fmt"
	"gitee.com/liumou_site/logger"
	"os"
	"strconv"
	"strings"
)

func (h *Hosts) Update() {
	reader := bufio.NewReader(os.Stdin)
	for {
		println("请选择需要更新的记录")
		for index, r := range h.RecordList {
			info := fmt.Sprintf("[ %d ] -> [ %s %s ]", index, r.Ip, r.Domain)
			fmt.Println(info)
		}
		fmt.Println("[b] 返回")
		fmt.Println("[q] 退出程序")

		n, _ := reader.ReadString('\n')
		n = strings.TrimSpace(n)
		n = strings.ToLower(n)
		if strings.EqualFold(n, "b") {
			return
		}
		if strings.EqualFold(n, "q") {
			os.Exit(0)
		}
		ni, err := strconv.Atoi(n)
		if err != nil {
			println("请输入正确的数字")
			continue
		}
		if ni < 0 || ni >= len(h.RecordList) {
			println("请输入范围内的数字")
			continue
		}
		fmt.Println("请选择需要更新的类型")
		fmt.Println("[1] 更新IP")
		fmt.Println("[2] 更新域名")
		fmt.Println("[b] 返回")
		fmt.Println("[q] 退出程序")
		n, _ = reader.ReadString('\n')
		n = strings.TrimSpace(n)
		n = strings.ToLower(n)
		if strings.EqualFold(n, "b") {
			return
		}
		if strings.EqualFold(n, "q") {
			os.Exit(0)
		}
		if strings.EqualFold(n, "1") {
			fmt.Println("请输入新的IP")
			n, _ = reader.ReadString('\n')
			n = strings.TrimSpace(n)
			h.RecordList[ni].Ip = n
			err = h.Write()
			if err != nil {
				logger.Error("更新失败： " + err.Error())
				return
			}
			logger.Info("更新成功")
			continue
		}
		if strings.EqualFold(n, "2") {
			fmt.Println("请输入新的域名")
			n, _ = reader.ReadString('\n')
			n = strings.TrimSpace(n)
			h.RecordList[ni].Domain = n
			err = h.Write()
			if err != nil {
				logger.Error("更新失败： " + err.Error())
				return
			}
			logger.Info("更新成功")
			continue
		}
	}
}
